#pragma once

#ifdef DIRECTINPUTHOOK_EXPORTS
	#define DIHOOK_API __declspec(dllexport)
#else
	#define DIHOOK_API __declspec(dllimport)
#endif

#define EXTERNC extern "C"


extern "C"
{
	// Function pointer types.
	typedef HRESULT (WINAPI *DirectInput8Create_t)(HINSTANCE hinst, DWORD dwVersion, REFIID riidltf,
										LPVOID * ppvOut, LPUNKNOWN punkOuter);

	typedef HRESULT (WINAPI *DllFuntion0)();

	typedef HRESULT (WINAPI *DllFuntion1)(REFCLSID rclsid,  REFIID riid,  LPVOID* ppv);
	// Function prototypes.
	HRESULT WINAPI MyDirectInput8Create(HINSTANCE hinst, DWORD dwVersion, REFIID riidltf, LPVOID * ppvOut,
									LPUNKNOWN punkOuter);
	STDAPI MyDllCanUnloadNow();
	STDAPI MyDllGetClassObject(REFCLSID rclsid,  REFIID riid,  LPVOID* ppv );
	STDAPI MyDllRegisterServer();
	STDAPI MyDllUnregisterServer();
}
